#include <sys/eventfd.h>
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>

int main()
{   
    //eventfd会创建一个描述符实现事件通知
    //第一个参数为初始值，第二个参数为非阻塞
    int efd=eventfd(0,EFD_NONBLOCK);
    if(efd<0)
    {
        perror("eventfd failed");
        return 1;
    }

    //eventfd的read和write进行IO的时候必须是8字节的数据
    uint64_t val=1;
    //写入多少就把efd中的初始值加多少
    write(efd,&val,sizeof(val));
    write(efd,&val,sizeof(val));
    write(efd,&val,sizeof(val));

    uint64_t res=0;
    //读取之后会把efd的初始值清空
    read(efd,&res,sizeof(res));
    printf("%ld\n",res);


    return 0;
}